﻿using System;
using System.Collections.Generic;
using System.Data.SqlClient;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace DAO
{
    public class DAOBarrio
    {
        public static List<Entidad.EntidadBarrio> getTodas()
        {
            List<Entidad.EntidadBarrio> lista = new List<Entidad.EntidadBarrio>();
            AccesoDato ad = new AccesoDato();
            try
            {
                String sql = "Select Id_barrio, Nombre, id_localidad from barrio order by nombre";
                SqlDataReader dr = ad.ejecutarSql(sql, null);

                while (dr.Read())
                {
                    Entidad.EntidadBarrio e = new Entidad.EntidadBarrio();
                    e.id_barrio = int.Parse(dr["Id_barrio"].ToString());
                    e.id_localidad = int.Parse(dr["id_localidad"].ToString());
                    e.nombre = dr["nombre"].ToString();
                    lista.Add(e);
                }
            }
            catch (ApplicationException)
            {
                throw new ApplicationException("Error al obtener todos los barrios");
            }
            finally
            {
                ad.cerrarDR();
            }

            return lista;
        }

        public static Entidad.EntidadBarrio buscar(int Id_barrio)
        {
            Entidad.EntidadBarrio e = new Entidad.EntidadBarrio();
            AccesoDato ad = new AccesoDato();
            try
            {
                String sql = "Select Id_barrio, Nombre, id_localidad from barrio where Id_barrio = @Id_barrio";
                SqlParameter parametro = new SqlParameter("Id_barrio", Id_barrio);
                List<SqlParameter> parametros = new List<SqlParameter>();
                parametros.Add(new SqlParameter("Id_barrio",Id_barrio));
                SqlDataReader dr = ad.ejecutarSql(sql, parametros);
                while (dr.Read())
                {
                    e.id_barrio = int.Parse(dr["Id_barrio"].ToString());
                    e.id_localidad = int.Parse(dr["id_localidad"].ToString());
                    e.nombre = dr["nombre"].ToString();
                    
                }
            }
            catch (ApplicationException)
            {

                throw new ApplicationException("Error al obtener el barrio");
            }
            finally
            {
                ad.cerrarDR();
            }
            return e;
        }

        public static List<Entidad.EntidadBarrio> barriosPorLocalidad(int id_localidad)
        {
            List<Entidad.EntidadBarrio> lista = new List<Entidad.EntidadBarrio>();
            AccesoDato ad = new AccesoDato();
            try
            {
                String sql = "Select * from barrio where id_localidad = @id_localidad";
                SqlParameter parametro = new SqlParameter("id_localidad", id_localidad);
                List<SqlParameter> parametros = new List<SqlParameter>();
                parametros.Add(new SqlParameter("id_localidad", id_localidad));
                SqlDataReader dr = ad.ejecutarSql(sql, parametros);
                while (dr.Read())
                {
                    Entidad.EntidadBarrio e = new Entidad.EntidadBarrio();
                    e.id_barrio = int.Parse(dr["Id_barrio"].ToString());
                    e.id_localidad = int.Parse(dr["id_localidad"].ToString());
                    e.nombre = dr["nombre"].ToString();
                    lista.Add(e);
                }
            }
            catch (ApplicationException)
            {

                throw new ApplicationException("Error al obtener los barrios");
            }
            finally
            {
                ad.cerrarDR();
            }
            return lista;
        }

        public static int getIdLocalidad(int id_barrio)
        {
            AccesoDato ad = new AccesoDato();
            int id_localidad = 0;
            try
            {
                String sql = "Select barrio.id_localidad from barrio where id_barrio = @id_barrio";
                List<SqlParameter> parametros = new List<SqlParameter>();
                parametros.Add(new SqlParameter("id_barrio", id_barrio));
                SqlDataReader dr = ad.ejecutarSql(sql, parametros);
                while (dr.Read())
                {
                    id_localidad = int.Parse(dr["id_localidad"].ToString());
                }
 
                
            }
            catch (ApplicationException)
            {
                
                throw new ApplicationException("Error al obtener el id localidad");
            }
            finally
            {
                ad.cerrarDR();
            }
            return id_localidad;
        }
    }
}
